<?php

/**
 * Automatically pass all templates through a wrapper.php template.
 * TungTT: Giải thích thêm
 * -Mục đích của class này là để custom lại template mặc định của wordpress.
 * -Template custom của chúng ta là wrapper.php
 * và tất cả các template có format đặt tên là wrapper-%.php
 * -Đọc thêm về fitller http://codex.wordpress.org/Plugin_API/Filter_Reference/template_include
 */

function app_template_path() {
	return APP_Wrapping::get_main_template();
}

function app_template_base() {
	return APP_Wrapping::get_base();
}


class APP_Wrapping {

	private static $main_template;
	private static $base;
        
        /**
         * Tung
         * QUAN TRỌNG: Hàm này làm cái nồi gì ở đây?
         * Hàm này quyết định template nào sẽ được load.
         * Cho nên NẾU trường hợp chúng ta muốn làm một trang có
         * template riêng biệt thì chúng ta làm 2 việc:
         * -Tạo một page có tên có format tpl-ct-xxxx.php
         * -Tạo một file có tên có format wrapper-xxxx.php
         * thì page tpl-ct-xxxx.php sẽ có template mà chúng ta quy định trong 
         * wrapper-xxxx.php
         */
        static function wrap( $template ) {
                self::$main_template = $template;

		self::$base = substr( basename( self::$main_template ), 0, -4 );
                if ( 'index' == self::$base )
			self::$base = false;

		$templates = array( 'wrapper.php' );
                
                if ( self::$base && strpos(self::$base, "tpl-ct-") !==  false){
                    //add thêm phần tử đầu tiên vô trong array.
                    array_unshift( $templates, sprintf( 'wrapper-%s.php', self::$base ) );
                }
                return locate_template( $templates );
	}

	static function get_main_template() {
		return self::$main_template;
	}

	static function get_base() {
		return self::$base;
	}
}
add_filter( 'template_include', array( 'APP_Wrapping', 'wrap' ), 99 );

